home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModalButtons.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  6.1 KB  |  226 lines  |  [TEXT/CWIE]

  1. /* ModalButtons.c -- Modal dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModalButtons.h"
  20.  
  21. #define kOKButton        1
  22. #define kCapInvisibleLabel        2
  23. #define kInvisibleButton        3
  24. #define kStandardButton        4
  25. #define kDefaultButton        5
  26. #define kBevelBox        6
  27. #define kButtonButton        7
  28. #define kNextButton        8
  29. #define kNext2Button        9
  30. #define kGraphicBox        10
  31. #define kCapcicnLabel        11
  32. #define kRightButton        12
  33. #define kCapicl8Label        13
  34. #define kLightButton        14
  35. #define kCapICNLabel        15
  36. #define kRight2Button        16
  37. #define kCapicl9Label        17
  38. #define kButton2Button        18
  39. #define kCapPICTLabel        19
  40. #define kRight3Button        20
  41. #define kRect3DButton        21
  42. #define kLeftIconButton        22
  43. #define kRightIconButton        23
  44. #define kTitledPICTButton        24
  45.  
  46.  
  47. /*----------*/
  48. Boolean        GetModalButtons ()
  49. {
  50.     Boolean            result = false;
  51.     ModalButtons*        dialog = NewModalButtons ();
  52.  
  53.     result = AMDialog_RunModal ((AMDialog*)dialog, DLOG_ModalButtons, nil);
  54.  
  55.     DeleteModalButtons (dialog);
  56.  
  57.     return result;
  58. }
  59.  
  60. //----------
  61. ModalButtons*        NewModalButtons ()
  62. {
  63.     ModalButtons*        dialog;
  64.  
  65.     dialog = (ModalButtons*)malloc (sizeof (ModalButtons));
  66.     ModalButtons_Init (dialog);
  67.     SetClassID (dialog, classModalButtons);
  68.  
  69.     return dialog;
  70. }
  71.  
  72. //----------
  73. void    DeleteModalButtons (
  74.     ModalButtons*        dialog)
  75. {
  76.     ModalButtons_Free (dialog);
  77.     free (dialog);
  78. }
  79.  
  80. //----------
  81. void    ModalButtons_Init (
  82.     ModalButtons*        self)
  83. {
  84.     AMDialog_Init ((AMDialog*)self);
  85. }
  86.  
  87. //----------
  88. void    ModalButtons_Free (
  89.     ModalButtons*        self)
  90. {
  91.     AMDialog_Free ((AMDialog*)self);
  92. }
  93.  
  94. //----------
  95. void    ModalButtons_FinishMake (
  96.     ModalButtons*        self)
  97. {
  98.     self->mOKHandle = AMDialog_GetControlItem ((AMDialog*)self, kOKButton);
  99.     SetDefaultState (self->mOKHandle, true);
  100.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kOKButton);
  101.     self->mInvisibleHandle = AMDialog_GetControlItem ((AMDialog*)self, kInvisibleButton);
  102.     self->mStandardHandle = AMDialog_GetControlItem ((AMDialog*)self, kStandardButton);
  103.     self->mDefaultHandle = AMDialog_GetControlItem ((AMDialog*)self, kDefaultButton);
  104.     SetDefaultState (self->mDefaultHandle, true);
  105.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kDefaultButton);
  106.     self->mBevelHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelBox);
  107.     self->mButtonHandle = AMDialog_GetControlItem ((AMDialog*)self, kButtonButton);
  108.     SetBevelButtonGraphicAlignment (self->mButtonHandle, kControlBevelButtonAlignCenter, 0, 0);
  109.     self->mNextHandle = AMDialog_GetControlItem ((AMDialog*)self, kNextButton);
  110.     SetBevelButtonTextPlacement (self->mNextHandle, kControlBevelButtonPlaceToRightOfGraphic);
  111.     SetBevelButtonTextAlignment (self->mNextHandle, kControlBevelButtonAlignTextFlushLeft, 0);
  112.     SetBevelButtonGraphicAlignment (self->mNextHandle, kControlBevelButtonAlignLeft, 0, 0);
  113.     self->mNext2Handle = AMDialog_GetControlItem ((AMDialog*)self, kNext2Button);
  114.     SetBevelButtonTextPlacement (self->mNext2Handle, kControlBevelButtonPlaceBelowGraphic);
  115.     SetBevelButtonTextAlignment (self->mNext2Handle, kControlBevelButtonAlignTextCenter, 0);
  116.     SetBevelButtonGraphicAlignment (self->mNext2Handle, kControlBevelButtonAlignTop, 0, 0);
  117.     self->mGraphicHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicBox);
  118.     self->mRightHandle = AMDialog_GetControlItem ((AMDialog*)self, kRightButton);
  119.     self->mLightHandle = AMDialog_GetControlItem ((AMDialog*)self, kLightButton);
  120.     self->mRight2Handle = AMDialog_GetControlItem ((AMDialog*)self, kRight2Button);
  121.     self->mButton2Handle = AMDialog_GetControlItem ((AMDialog*)self, kButton2Button);
  122.     self->mRight3Handle = AMDialog_GetControlItem ((AMDialog*)self, kRight3Button);
  123.     self->mRect3DHandle = AMDialog_GetControlItem ((AMDialog*)self, kRect3DButton);
  124.     self->mLeftIconHandle = AMDialog_GetControlItem ((AMDialog*)self, kLeftIconButton);
  125.     self->mRightIconHandle = AMDialog_GetControlItem ((AMDialog*)self, kRightIconButton);
  126.     self->mTitledPICTHandle = AMDialog_GetControlItem ((AMDialog*)self, kTitledPICTButton);
  127. }
  128.  
  129. //----------
  130. void    ModalButtons_ConnectToData (
  131.     ModalButtons*        self,
  132.     AMSignaler*        inData)
  133. {
  134.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  135.  
  136. }
  137.  
  138. //----------
  139. void    ModalButtons_DoItem (
  140.     ModalButtons*        self,
  141.     SInt16        inItemHit)
  142. {
  143.     switch (inItemHit) {
  144.     case kOKButton:
  145.             AMDialog_SetResult ((AMDialog*)self, true);
  146.         break;
  147.     case kInvisibleButton:
  148.             //? this button doesn't have a command
  149.             // DoInvisibleButton ();
  150.         break;
  151.     case kStandardButton:
  152.             //? this button doesn't have a command
  153.             // DoStandardButton ();
  154.         break;
  155.     case kDefaultButton:
  156.             //? this button doesn't have a command
  157.             // DoDefaultButton ();
  158.         break;
  159.     case kButtonButton:
  160.             //? this button doesn't have a command
  161.             // DoButtonButton ();
  162.         break;
  163.     case kNextButton:
  164.             //? this button doesn't have a command
  165.             // DoNextButton ();
  166.         break;
  167.     case kNext2Button:
  168.             //? this button doesn't have a command
  169.             // DoNext2Button ();
  170.         break;
  171.     case kRightButton:
  172.             //? this button doesn't have a command
  173.             // DoRightButton ();
  174.         break;
  175.     case kLightButton:
  176.             //? this button doesn't have a command
  177.             // DoLightButton ();
  178.         break;
  179.     case kRight2Button:
  180.             //? this button doesn't have a command
  181.             // DoRight2Button ();
  182.         break;
  183.     case kButton2Button:
  184.             //? this button doesn't have a command
  185.             // DoButton2Button ();
  186.         break;
  187.     case kRight3Button:
  188.             //? this button doesn't have a command
  189.             // DoRight3Button ();
  190.         break;
  191.     case kRect3DButton:
  192.             //? this button doesn't have a command
  193.             // DoRect3DButton ();
  194.         break;
  195.     case kLeftIconButton:
  196.             //? this button doesn't have a command
  197.             // DoLeftIconButton ();
  198.         break;
  199.     case kRightIconButton:
  200.             //? this button doesn't have a command
  201.             // DoRightIconButton ();
  202.         break;
  203.     case kTitledPICTButton:
  204.             //? this button doesn't have a command
  205.             // DoTitledPICTButton ();
  206.         break;
  207.  
  208.     } // switch
  209. }
  210.  
  211. //----------
  212. void    ModalButtons_DataChanged (
  213.     ModalButtons*        self,
  214.     long        inDataID)
  215. {
  216. }
  217.  
  218. //----------
  219. Boolean        ModalButtons_Filter (
  220.     ModalButtons*            self,
  221.     EventRecord            *ioEvent,
  222.     DialogItemIndex        *outItemHit)
  223. {
  224.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  225. }
  226.